\def\UseDoublespace{1}  % Set this to "0" if doublespace.sty is incompatible
                        % with your configuration (e.g. AMS LaTeX)

\ifnum\UseDoublespace=1
\documentstyle[12pt,doublespace]{article}          % Not including .CFG file
%\documentstyle[12pt,doublespace,verbatfi]{article} % Including .CFG file
\setstretch{1.4}
\else
\documentstyle[12pt]{article}                      % Not including .CFG file
%\documentstyle[12pt,verbatfi]{article}             % Including .CFG file
\renewenvironment{singlespace}{}{}%
\fi
%=============================================%
% Set this to whatever fits your printer best %
%=============================================%
%
% Quatro paper
%
\oddsidemargin=-0.5cm
\evensidemargin=-0.5cm
\textwidth=6.7in
\topmargin=-0.6cm
\textheight=9.0in
%
% A4 paper
%
%\oddsidemargin=-0.5cm
%\evensidemargin=-0.5cm
%\textwidth=6.6in
%\topmargin=-2cm
%\textheight=24.5cm

\overfullrule=0pt
\setlength{\parindent}{0pt}
\setlength{\parskip}{8pt}

\newcommand{\bs}{$\backslash$}
\newcommand{\inv}{${}^{\wedge}$}
\newcommand{\underscore}{\raise -0.5ex\hbox{--}}

\begin{document}

\thispagestyle{empty}

\vspace*{2in}
\begin{center}
{\LARGE \bf BibDB} \\
\vskip0.5cm
{\large\bf an Interactive Bib\TeX\ Bibliography Manager}\\
\bigskip
Version 1.4d \\
\bigskip
Conceived, created and misprogramed by Eyal Doron \\
\bigskip
January, 1994
\end{center}

\newpage
\begin{singlespace}
\tableofcontents
\end{singlespace}
\newpage
\section{Introduction}

BibDB is a program for manipulating database files, primarily Bib\TeX\
database files. Bib\TeX\ is a good way of keeping a reference library, but
managing it using just a text editor and fallible human memory is a pain.
Finding entries using criteria such as year, keywords, and so forth, is
cumbersome, and entering data is fraught with errors.

Enter BibDB. With BibDB you now have a user friendly interface to Bib\TeX\
citation databases, which allows you to browse through the database, extract
selected entries and enter and edit entries in a convenient manner.

This program has been somewhat tested on 286, 386 and 486 computers, running
MsDos 3.3 to 6.0 and having over 640K of memory. A 286+ CPU and at least
420K of free conventional memory, DOS 3.3 and up, and a
hard disk, are needed for BibDB to work satisfactorily. A RAMDISK and/or disk
cache is also recommended, and XMS and EMS memory can be used if available.

This manual is intended for people who are already familiar with Bib\TeX.
Please READ IT. If you do not understand the terms, such as entries, fields,
Required and Optional fields, and so on, you should read the Bib\TeX\
documentation.

\subsection{Main features}

For the impatient (and for the patient, too), the main features of BibDB are
the following:

\begin{itemize}

\item Utilizes a more or less intuitive mouse-and-menu interface, with a
minimum of hidden commands to learn;

\item Works directly on your old bibliography files (lines must not exceed
255 characters, though);

\item Provides search, display, edit, replace and delete features for
bibliography entries;

\item Hides from the user most details of Bib\TeX\ syntax and rules;

\item Operates on files with up to 65535 entries. That size file will strain your
patience though;

\item Maintains your Bib\TeX\ files in an orderly human-readable format;

\item Can maintain automatically sorted databases, using several sort
criteria. Can also read sorting data embedded in the database files, and
optionally write sorting data onto old or new files;

\item Implements a flexible selection mask which can ``hide" from the user
all entries which do not match the mask;

\item Allows merging of files and dumping selected entries to external files;

\item Allows creation of a logical ``database" made up of several individual
database files via a `link' mode;

\item Provides extensive support for multi-lingual files. Files can be
automatically and transparently converted from 7-bit mode ({\it i.e.}
accented characters being represented by \TeX\ codes) to 8-bit mode ({\it
i.e.} accented characters being represented by high bit IBM characters) and
vice versa. You can thus maintain your files in conventional \TeX\ format,
while still using the full 8-bit capabilities of your code page within BibDB;

\item Almost all features can be controlled via a configuration file. In
particular, the configuration file allows the user to completely specify
the display format of entries on screen. BibDB can also be configured for
databases other than bibliography ones (hint, hint).

\item Supports multitaskers such as DESQview and Windows 3.x;

\item Can use EMS and XMS memory for faster operation;

\item Has context sensitive online help. Pressing `F1' from most screens brings
up a brief description of active keys.

\item Is completely free. I know this is not important to most of you, but
nevertheless there it is.

\end{itemize}

%\newpage
\section{Using BibDB}

\subsection{The Command Line}

The format of the BibDB command is:
\begin{verbatim}
BibDB <bibliography name(s)> [options]
\end{verbatim}
where the options may be chosen from
\begin{verbatim}
  [/a <dirlist>] [/c <filename>] [/d <filename>] [/p <filename>] [/readonly]
        [/link] [/color] [/colour] [/mono] [/h] [/?] [/help] [/debug]
        [/noxms] [/noems] [/nomouse]
       
\end{verbatim}
The bibliography and dumpfile names can be supplied without the `.bib'
extension, and the configuration file does not have to include the `.cfg'
extension. If the bibliography file specifications do not include a path,
BibDB searches for the bibliography in the following directories:
\begin{itemize}
\item The current directory;
\item Directories specified in the configuration file in the ``texinputs''
      environment.
\end{itemize}
The bibliography names will be entered into the bibliography file list, in
the order specified (see ``Files'' section).

There is no automatic search path for the dumpfile. The dumpfile is optional
--- If you do not do a dump, there is no need to specify a dumpfile. The
`/link' qualifier switches on a logical linkage between the bibliography
files specified -- the program treats them as one sequential file. The `/a'
option determines the directories in which BibDB will try to put its
temporary files (see description of the `auxdir' parameter in the
configuration file). The directory list may be surrounded by quotes, and may
also be empty (in which case it must be surrounded by quotes). An empty
auxiliary directory list has the effect of disabling all file editing. This
result can also be achieved using the `/readonly' option. The `/p' option
lets you load into the program a pattern file, containing a pattern which was
created earlier by BibDB. The `/mono' option forces monochrome operation on
color screens, while the `/color' (or `/colour' for the British) option
forces use of user defined colors on monochrome screens. The use of XMS
memory, EMS memory and mouse can be switched off using the `/noxms', `/noems'
and `/nomouse' options, respectively. A help screen listing the available
command line options and their meanings will be written on the computer
screen if you specify `/?', `/h' or `/help'. Finally, the `/debug' option
switches on various informative messages on the state of the program. Use
this option when BibDB does unexpected things.

\subsection{The Main Menu}

This is the upper level of BibDB. Most BibDB operations will be performed
from this level, and here the entries in the bibliography file are displayed.
The possibilities that are now arrayed before you are the following:
{\parskip=0pt

\paragraph{Next:}
Proceed to the next entry.

\paragraph{Back:}
return to the previous entry.

\paragraph{Goto:}
Directly go to a specified entry. You can specify an
entry by its name (label), serial number, or using one of two kinds of entry
menus. If you choose to specify a name, BibDB looks for a name {\em
containing} the string you input. You can use the `$<$' symbol at the
beginning of the string to signify the beginning of the name, and a `$>$'
symbol at the end to signify the end of the name. BibDB commences searching
for the specified name from the current position, and wraps around the end of
the file. Choosing `Entry?' also provides a list of the contents of the
database file. The entry list will start either from the current entry, or
from the beginning of the file, depending on the setting of the
``Stickylist'' option (see the ``Misc'' section). Choosing `Overview' gives a
more informative overview, in which the entry name, and up to three more
fields determined in the configuration file are shown. The `Overview' list
always starts from the current position.

\paragraph{Edit:}
Edit the current entry, or Copy, Cut, Paste or replace
current entry by the entry stored in the clipboard. For details on the Entry
Edit screen see the appropriate section. Editing (except for the `Copy'
command) is disabled while in link mode.

\paragraph{Add:}
Create a new entry and insert it into the
bibliography. You can append it to the end of the file, or insert it at
any arbitrary point. Starting from ver. 1.4, you can also instruct BibDB
to automatically insert your new entries in the proper place in a sorted
bibliography. Add is disabled while in link mode. Note that if automatic
support of sorted databases is on, the ``sorted" option is implicitly chosen,
and the menu of insertion point choices does not appear.

\paragraph{Imp.:}
Import and merge an external Bib\TeX\ file into the current bibliography
file. The menu is identical to the ``Add" menu, to choose an insertion
position for the imported file, or to insert each new entry in its proper
place in a sorted bibliography file. Note that if automatic support of sorted
databases is on, the ``sorted" option is implicitly chosen, and the menu of
insertion point choices does not appear.

\paragraph{Dump:}
Dump the current entry, selected entries or all
entries to the dump file, define a dump format, toggle the dumpfile mode
(Bib\TeX/Comma delimited) and dump according to an external list.

\paragraph{Patt.:}
Define, edit, save or load a search pattern. The
idea of a pattern is central to the philosophy behind BibDB: only entries
that are consistent to the defined pattern are visible to the program.

\paragraph{Misc:}
About, count the number of entries in the bibliography
file that conform to the pattern, change program options, change the default
directory, shell to DOS, suspend program or reset the system.

\paragraph{Files:}
Change the bibliography and dump files, and toggle the link mode. It is also
possible to change to file ``n" by pressing Alt-n, where $1\le {\rm n}\le 8$.

\paragraph{Quit:}
Exit the program.
}

Choose one of these options by typing the highlighted letter of your
selection, with or without the ALT key being pressed, or by using the arrow
keys to move the highlight bar to the selection and pressing ENTER.
Alternatively, if a mouse is present, you can click on the desired selection
with the mouse. Pressing `F1' will pop up a brief description of the active
keys.

The entries are displayed on the screen in the following manner: The name of
the entry appears as a centered title of the display window. In the bottom
left corner appears the bibliography file name, while in the bottom right
corner appears the entry type. An asterisk appears next to the bibliography
file name if the file is ReadOnly, while a plus sign precedes the file name
whenever the program is in link mode. In the top right corner appear the
sequential absolute and pattern--conforming numbers of the entry,
respectively (only the absolute number appears if no pattern is in force).
The rest of the entry is shown on screen in a manner which is defined in the
configuration file (see below). This format is extremely flexible and can be
changed to suit individual tastes and user defined bibliography styles. An
additional point -- Bib\TeX\ macros and fields containing macros are preceded
by the `@' character. This character will {\em not} appear in the database
file.

If the entry is too long to fit on the screen, it can be scrolled using the
`PgUp', `PgDn', `Home' and `End' keys. One can also scroll the screen using
the mouse, in the following fashion. Clicking on one of the arrows in the
corners of the window scrolls the window up or down. Clicking the mouse on an
empty spot on the top and bottom margins of the window scrolls the screen to
the top and bottom of the entry, respectively. Note that the scrolling can be
relatively slow. However, it should be needed fairly rarely.

There is an additional way to enter the `Edit' mode. Clicking the mouse on a
blank place on the screen is equivalent to choosing `Edit Entry' in the
``Edit'' menu on the main screen. Clicking {\em on a displayed field} will
put you in `Edit' mode, and let you edit that specific field. This is
equivalent to choosing `Edit' from the top menu, and choosing that field for
editing. Note that editing is switched off in link mode.

BibDB also supports simple page layout formatting.
Including a user specified control inserts one or more line breaks into the
displayed fields. In addition, tilde characters ``\char'176" are displayed
as spaces, allowing the insertion of simple tables into displayed Bib\TeX\
fields. These options are controlled by the configuration file.

Beginning in version 1.4, the display format can be toggled between the
configuration file specified format (default), and a ``see all" format in
which all non-zero fields are displayed, one to a line. Toggling the display
format is performed by pressing ``Alt-V" (sorry, no mouse equivalent in this
menu).

\subsubsection{Add}

When you choose `Add' from the main menu, a secondary window opens, with
which you specify where you want to insert the new entries. After
specifying the insertion point, you are prompted to give a name to the
new entry. An empty name (just pressing ENTER) will terminate the `Add'
mode. The possible insertion points are:
\begin{itemize}
\item The end of the file.
\item Just before the current entry. The current entry is the last one
      you have looked at in the main screen.
\item Just after the current entry.
\item Number. You are prompted for an entry number. The insertion point
      will be placed just before that entry.
\item `Before Entry?'. You are shown a list of entries in the file. You
      then choose the name of the entry before which the insertion point will
      be placed. If more entries are found than fit on a page, you can go to
      the next pages by pressing the `PgUp' and `PgDn' keys (or by clicking
      with the mouse on the `[PgUp]' and `[PgDn]' boxes at the bottom of the
      window). Pressing an alphanumeric key brings you to the next entry, on
      the screen, beginning with that character.
\item As the first entry in the file.
\item Sorted. The new entries will be placed in the current database file
      according to the sort order defined in the configuration file. Thus, if
      the file is sorted, it will remain sorted automatically. 
\end{itemize}
Remember that entries not conforming to the currently defined Pattern are
invisible to the program, when you choose an insertion point.

If the automatic sorted file support is ``on", BibDB checks whether the
current file conforms to the current sort order. If so, the secondary menu is
skipped altogether and the ``sorted" option is automatically selected. If the
file does not conform to the current sort order, BibDB shows an error message
and returns to the main menu. If the automatic sorted file support is
``auto", BibDB determines if the current file is sorted or not. If the
current file is unsorted, the secondary menu is shown, otherwise the 
``sorted" option is automatically chosen. A file with less than 2 entries
is regarded as sorted if the current sort mode is ``on", and unsorted if the
current sort mode is ``off" or ``auto". If the current file is empty, BibDB
will insert into it the current sort environment if the ``AddToNewFiles" sort
option is set.

If the insertion point is properly chosen, you are now put into the Entry
Edit screen, with an empty entry (see appropriate section). You now edit the
entry and end. What happens next is determined by the value of the
``addmultiple'' configuration option: If it is on, you will again be prompted
for a new entry name. Entering a null entry name will terminate the ``Add''
mode and return you to the main menu. If the ``addmultiple'' option is off,
you will be returned to the main menu after the addition of a single entry.

BibDB can be told to ensure that the entries you input through ``Add'' do not
have a name that is already present in the database file. This option is
controlled by the ``CheckDuplicate'' parameter in the configuration file.
Also, BibDB will not let you write an entry with an empty name. ``Add"
is disabled in link mode.

\subsubsection{Imp.}

Use this menu to merge an external Bib\TeX\ file with the current file. This
is very similar to the ``Add" option, except that the new entries come from a
file and are not keyed in manually. The ``Imp" mode supports manual and
automatic sort in much the same way as the ``Add" mode. Note that ``Imp."
mode can be used to sort an unsorted database file, by merging it into an
empty database using the ``sorted" option. It can also be used to weed out 
duplicate entry names in an old file (see below). ``Imp." is disabled in link 
mode.

The Import option works in conjunction with the current pattern (see below).
If a pattern is in force, only entries which conform to the pattern will be
added to the current file. Entries with empty names will not be imported in
any case. BibDB will also not allow importing entries with duplicated
names. You will be prompted to either rename a duplicated entry, skip
all duplicated entries, ignore that particular entry or abort the merge
process.

When importing entries into a new database file, BibDB will also copy the
input file's header (all the text in the file up to the first entry), except
that a sort environment, if present, will be filtered out. If the
``AddToNewFiles" sort option is appropriately set, BibDB will also add a sort
environment containing the current sort parameters to the file.

\subsubsection{Patt.}

Use this screen to define the search pattern. The search pattern comprises a
sequence of patterns and logical operations. Each pattern is made of a
search string and a list of fields. The pattern is evaluated as true if the
search string is found in one of the fields, and false otherwise. The
evaluation of the whole search pattern proceeds in a stack oriented (RPN)
manner: each pattern is evaluated and pushed into the stack. A logical
operation replaces the top stack element by either its inverse (\inv\ --
NOT) or the operation performed on the top two elements (+ -- OR, and * --
AND). For example, if one desires to match all entries which have J. Smith
as an author, {\em and} either {\em do not} contain the word ``TeX'' {\em or
do} contain the word ``Bibliography'' in their title, keywords or abstract
fields, one would enter the pattern

``Author: J. Smith'' ``Title+Keywords+Abstract: TeX'' \inv
``Title+Keywords+Abstract: Bibliography'' + *

Actually using the Pattern screen is, I think, self explanatory. Press the
relevant keys on the keyboard, or click on them with the mouse. The ``Enter
Pattern'' mode can also be entered by clicking with the mouse on the ``Choose
Field'' menu, on the right hand side of the screen. The options appearing in
the ``Choose Field'' menu are determined in the ``\bs patternformats''
environment of the configuration file. When choosing a set of fields from the
list, you may mark all fields by pressing ``ALT-A'' or ``Ctrl-A'', and clear
all fields using ``ALT-C'' or ``Ctrl-C''. Mouse users may also click on
``[all]'' and ``[erase]'', respectively. When entering a search string, note
that the string may be up to 255 characters in length, even though the
editing window is shorter. The memory registers are also available --
use ``ALT-S'' or click on ``[S]'' to save, and use ``ALT-R'' or click on
``[R]'' to recall. If the defined pattern does not fit in the pattern display
window, it may be scrolled using the arrow keys, and the `Home' and `End'
keys, in the normal fashion. The pattern may be toggled on or off by pressing
`O' or clicking on the relevant box with the mouse, and the
search may be performed with or without regard to case. Leave the screen by
pressing or clicking RETURN (for exit and retain changes) or ESC (for exit
and discard changes). Re-entering the Pattern screen lets you continue
editing the previously defined pattern.

If a field is designated ``numeric'', there is an additional meaning to
search strings. When defining a search string for a numeric field, you can
also define a range. For example, ``year: 1991'' will look for entries whose
year is 1991, while ``year: 1989-1991'' or ``year: 1989 to 1991'' will look
for entries whose year is in the range 1989 to 1991. Fields are designated as
``numeric'' in the configuration file. The fields ``year'' and ``number'' are
designated numeric in the supplied configuration file.

Beginning with version 1.3, it is also possible to save and load patterns to
and from the disk. Use the `Save/Load' commands for this. The patterns are
stored in binary files with the default extension `.ptn'. BibDB searches for
the pattern files along the `TexInputs' directory list, and in the current
directory. The usual DOS wildcards may also be specified in a pattern file
name, in which case you will be prompted to choose from a list of all files
found. A pattern that was saved earlier using `Save' can also be loaded into
BibDB at startup, by specifying its name following the `/p' command line
option.

\subsubsection{Dump}

Choosing this option opens a secondary menu, with the following options:

{\parskip=0pt

\paragraph{Dump current:} Dump the current entry (the one visible on the
screen) to the dump file, in Bib\TeX\ or Sort (comma delimited) format,
according to the dump mode in force. The dump format (the list of fields
which will be dumped) is determined by the ``Format of Dump'' option.

\paragraph{All:} Dump all entries in the bibliography database that
conform to the pattern to the dump file. If dumping to a new file, or
overwriting an old file, BibDB will also copy the current file's header,
filtering out any existing sort environment.

\paragraph{Range:}  Dump all entries in the bibliography database that
conform to the pattern to the dump file, and whose (pattern conforming)
serial numbers lie in the specified range. Specifying zero (or blank) as the
final entry number will dump to end of file.

\paragraph{Order file:} Read an external file, and dump entries to the
dumpfile according to the list of entry names contained in the external file.
The external file must be in comma delimited format: each line should contain
either the entry name only, or a series of fields, separated by semicolons,
the last of which is the desired entry name. The entries are dumped to the
dump file in Bib\TeX\ format, irrespective of the dump mode in force.

\paragraph{Format of Dump:} Define which fields will be dumped to disk when
either the whole bibliography or selected entries are dumped. You have a
choice of dumping the name only, or a variety of field choices. The choices
that appear on this menu can be controlled by the ``\bs dumpformat''
environment of the configuration file. The initial setting is to dump all
fields. The chosen setting is in force until changed or until a reset is
performed.

\paragraph{Normal/Sort Mode:} Choose the dump mode. In Normal mode entries are
written to the dump file in Bib\TeX\ format, while in Sort mode the entries
are written in comma delimited format: the entry is written in one line, with
fields being separated by semicolons, and the entry names appear at the {\em
end} of the line. The sort mode is set to Normal at startup, and following a
program reset. Note that the dump mode affects the ``Dump All'' and the
``Dump current'' command, but not the ``Order file'' command.

}

The ``Order file'' command and the Sort dump mode, are provided in
order to enable rearranging the bibliography, according to any user
specified order. For example, the database can be sorted according to entry
name using the following procedure:

\begin{itemize}
\item Go to the ``Dump'' menu, choose the dump format ``Name only'' and dump
mode ``Sort'', and dump (using ``All'') to the file ``order.bib''.

\item Go to Dos, either by leaving the program or by using ``Shell'' in the
``Misc'' menu, and sort the file ``order.bib'' using the DOS sort command, or
equivalent.

\item Inside BibDB, go to the ``Dump'' menu, change the dump format to
``All'', choose ``Order file'', and specify the file ``order.bib''. You will
now have a sorted bibliography database in your dump file.
\end{itemize}
For more complicated sortings, it is up to the user to arrange the order file
according to his/her/whatever wishes. This feature is now rather
obsolete, as many sortings
can now be performed more conveniently using the Import File
feature together with the ``Sort" mode.

\subsubsection{Misc}

Choosing this option opens a secondary window, with the following options:

{\parskip=0pt
\paragraph{About} This opens a window and displays the program name, version
  number, and, most importantly, my name.
  
\paragraph{Count entries:} Choosing this gives a count of the total number of
  entries in the current bibliography file, conforming to the pattern in
  force.
  
\paragraph{Options:} This choice opens a screen, by which you can change several
  of the program parameters. Using the keyboard, choose the option you want
  to change with the arrows. `[space]' changes the value of the chosen
  option. Use `[Enter]' to finish the changes, or `[Esc]' to leave and forget
  any changes you may have made. With the mouse, click on the option name to
  choose it, or on the option value to change. Note that, if swapping has
  been disabled in the configuration file, it can not be switched on in this
  menu.

\paragraph{Sorting:} This choice opens a screen, by which you can change the
  various sort parameters of the program. It is possible to edit either the
  current or the default sorting parameters (those that get loaded whenever
  a new file is loaded which does not have embedded sorting information).
  Sorting data may also be read from a database file which contains a sort
  environment, and written into the current database file, replacing any
  existing sort information there. Usage is similar to the ``Options" screen.
  
\paragraph{cHange dir:} Use this option to change the default drive and
  directory. This is of use since BibDB looks for bibliography and pattern
  files in the default directory, as well as along the `TexInputs' directory
  list.
  
\paragraph{DOS shell:} Start a DOS shell. BibDB can swap most of itself
  out to disk, EMS, XMS or extended memory, according to the available
  memory and the definitions in the configuration file. When swapping to
  disk, the program looks for a swap directory in the configuration file. If
  it is missing there, the program will use the current directory.
  
\paragraph{Suspend:} Choosing this option closes all files, waits for user
  input, and then restores the previous state. This option is mainly for use
  when running BibDB under a multitasker, such as DESQview or Windows 3.x.
  Suspending the program allows another program, such as Bib\TeX, to access
  the current bibliography file from another window or task without invoking
  a share violation.
  
\paragraph{Reset:} This option resets the program, as if it is restarted
  (minus the selfcheck). Resetting the program also re--reads the
  configuration file and the command line. Note that the command line might
  get corrupted during a shelling to DOS.
}

\subsubsection{Files}

Choosing this option opens a dialog menu, from which you can change the
current bibliography file and/or the current dump file. BibDB has the
capability to store the name and current position of up to eight bibliography
files in memory, to enable easy switching between them. When switching to a
new bibliography file, BibDB remembers the current position, and restores it
if and when you return to that file.

Operating the file exchange menu is as follows. The arrows move the cursor
between the files. You can also move directly to a file by entering its
serial number, or `D' for the dump file. The ``---$\!>$'' pointer points
to the current bibliography file. Pressing `C' moves the pointer to the
cursor, making the designated file current, while pressing ``ALT-<n>"
will move both the bar and the pointer to file number ``n".
Pressing `[space]' lets you edit
the file name. Pressing `[enter]' leaves the menu, keeping your selection,
while `[Esc]' leaves the menu without changing the current file. Using the
mouse, click on the appropriate file to edit it. Clicking on the file
prefixes moves the cursor, while clicking above or below the pointer, or
double clicking on the prefixes moves the current file selection. You may
enter a file designator including the usual DOS wildcard characters ``*'' and
``?'', in which case a list with all files found will open, and you will be
prompted for a selection.

A powerful feature of BibBD is the link mode. When this mode is switched on,
a logical linkage is created between all valid files stored in BibDB's
memory. The program then regards all the files as one logical file, for the
purpose of searching and viewing (NOT editing). Thus one can combine the
convenience of having several separate, relatively small bibliography files,
with the capability to do a joint search and view, as if one had only a
single, large file. The link mode can be switched on in the command line, and
toggled in the ``Files'' screen by pressing `L' or `U'. Mouse users can also
toggle the link mode by clicking on the `[link]' or `[unlink]' box. Whenever
the link mode is on, a schematic drawing of the linkage paths can be seen on
the screen. Note that the bibliography file names can not be edited while in
link mode. Additionally, BibDB is effectively put into read-only mode while
in link mode.

For the forgetful, pressing `F1' will pop up a brief help screen.


\subsection{The Entry Edit Screen}

The Entry Edit screen is the screen that is used in order to add a new entry,
or edit an existing one. It is used both in the `Add' screen and in the main
screen, in `Edit' mode. Once you enter this screen, the border of the window
is shown in a different color, to remind you that you are in the Entry Edit
mode. The options before you are the following:

{\parskip=0pt

\paragraph{Type:} Choosing Type opens the Entry Type Menu. This menu
contains the names of all permissible entry types, as defined in the
configuration file (the supplied configuration file defines all types defined
in the standard Bib\TeX\ style files). You can move about in this menu using
the arrow keys, or by typing the first letter of the desired type. If more
than one type starts with that letter, type the first letter until you get to
your choice. Select the highlighted item by pressing $<$ENTER$>$.
Alternatively, you can select a type by clicking on it with the mouse.

\paragraph{Name:} Choose this in order to edit the name (label) of the
entry.

\paragraph{Which?:} This choice is similar to the `Fields' choice, but
is meant for those who are not sure which entry type best fits their needs.
Choosing this option opens a menu, from which you can choose an entry type
(similar to the one which opens when you choose `Type'). Choosing (with
arrows or the mouse) one of the types opens a `Fields' menu, for that type.
You can either choose fields to edit from that menu, or leave. If you leave
you will return to the Types menu, from which you can then choose another
type. Once you decide to choose fields to edit from the Fields menu, you will
be given those fields to edit, {\em and} the entry type will be changed to
the last type you chose. To summarize, this choice is a merge of the `Type'
and `Fields' choices, into one operation. The fields chosen are remembered
for next time.

\paragraph{Fields:} Opens a menu containing all permissible field names, and
lets you choose any number of them for editing. The permissible fields are
those defined in the configuration file (the supplied configuration file
defines all fields defined in the standard Bib\TeX\ styles, plus the fields
``keywords'' and ``abstract''). The fields are separated into Required,
Optional and Ignored fields, according to the entry type. The Required and
Optional fields for each entry type are defined in the configuration file
(see below), while the Ignored fields are all the rest. A check mark
($\surd$) appears next to the names of fields which are not empty in the
entry being edited. Choose the fields using the arrows and space keys, or the
mouse. Clicking on a field name, or pressing `space' while the blinking
cursor is positioned on one, toggles the `chosen' status of that field. You
can also choose all the Required fields by clicking on ``Required'' or
pressing `R' from the keyboard. The Optional fields can also be marked in the
same manner. Exit the menu and accept the choices made by pressing
$<$ENTER$>$ or clicking on `[ok]'. Pressing `ESC', or clicking on the Window
Close block, aborts the menu. Finally, all the marks may be removed by
clicking on `[erase]' or pressing `E'. The fields chosen are remembered for
next time, on an entry type basis.

\paragraph{Default:} Choosing this option lets you edit the default
choice of fields. The default choice is specific to each entry type. It
is set up during the initialization, according to the configuration file (see
appropriate section), and updated later whenever you use either the
`Which?' or the `Fields' option.

\paragraph{Edit:} Use this submenu to copy/cut/paste the displayed entry
to and from the clipboard, or to clear the entry without affecting the
clipboard.

\paragraph{View:} Choosing this menu item toggles the display back and
forth between the normal (configuration file specified) display format and a
``see all" format, in which all non empty fields are displayed.

\paragraph{Save:} This does just what its name implies. The entry is
saved in the bibliography file and the Entry Edit screen is exited.

\paragraph{Quit:} Exit the Entry Edit screen. If you have made
changes to the entry, you will be asked if you want to save the changes.

}

If the contents of a field are shown on screen, you can also select it for
editing by clicking on it with the mouse. This is considerably quicker than
going through the ``Fields?'' menu.

If the entry does not fit on the screen, it can be scrolled in the same
manner as in the main screen. As in the Browse screen, a brief help
screen is accessible by pressing `F1'.

\subsubsection{The Field Edit Window}

Once a field has been selected for editing, the Field Edit Window is opened.
All actual text editing is done via this window. Its contents can be edited
in a full--screen fashion. The arrows move you through the text, and the
`Home', `End', `Del' and `Backspace' keys work as expected. Pressing `Tab' or
`Ctrl-Tab' moves the cursor to the beginning of the next and previous words,
respectively. `Ctrl-W' deletes words. You can scroll the window up or down by
pressing the `PgUp' and `PgDn' buttons, respectively, or by clicking with the
mouse on the arrows on the border of the window. Clicking on the top frame of
the window is equivalent to pressing `Home', while clicking on the bottom
window frame is equivalent to pressing `End'. `ESC' erases the line, Ctrl-C
brings back the original contents, and Ctrl-Home and Ctrl-End delete the line
to the cursor and from the cursor, respectively. You can also use the mouse
to position the cursor. Just click at the desired position. Additionally, by
pressing and holding down the left mouse button, you can mark a segment for
later deletion using the Del button. A section may also be marked from the
keyboard, by pressing and holding down the `Ctrl' key, and pressing the left
and right arrow keys, or the `PgUp' and `PgDn' keys. Finally, clicking on the
Close Window box at the upper left corner of the window is equivalent to
`Ctrl-C ENTER', while clicking on the `[ok]' box at the lower right corner is
equivalent to `ENTER'.

While in the Field Edit Window, page layout formatting is switched off, and
one sees (and edits) all characters in the field. A line break is represented
in the text by a user defined control word (``{\tt \bs Cr}" by default),
followed by a numerical argument surrounded by curly braces, as in \TeX\ 
commands. The argument may also be empty, signifying zero, however the pair
of curly braces is mandatory. The numerical argument stands for the number of
empty lines which will appear on the screen. Thus, ``{\tt \bs Cr\{\}}" or
``{\tt \bs Cr\{0\}}" will insert a simple line break, while ``{\tt \bs
Cr\{3\}}" will insert a line break, followed by three empty lines. Since any
sequence of more than one real space will be contracted to a single space in
the bibliography file, one can insert hard spaces into the display by using a
sequence of tilde characters ``\char'176" (Note that the first space after
the tilde string {\em will} be displayed).

From Ver. 1.4, it is possible to insert special characters (high bit codes)
into fields, by entering their ASCII codes. This can be done in one of two 
ways. The first is the standard DOS method: press and hold down the ALT key,
and enter the ASCII code from the numerical keypad. The second method is
to press Ctrl-Q, and enter the ASCII code into the dialog box. BibDB also
supports the various language-specific keyboards in the DOS ``keyb" command
is used.

Another feature of the Field Edit Window is the `Capitalize' operation.
Pressing `ALT-C', or clicking on the `[Cap]' box on the window frame (when it
is displayed), will capitalize the edited text. All words will be
capitalized, except articles and text enclosed in braces. \TeX\ macros and
text inside a math environment (surrounded by \$) is not capitalized. Also
not capitalized are Bib\TeX\ macro names (see below). Accented high bit
characters will be capitalized according to the code page being used --- if
the code page does not support the capitalized variant (as frequently happens
using {\it e.g.} code page 437), the \TeX\ form will be substituted.

It is also possible to designate specific fields for automatic
capitalization, using the configuration file. Fields designated as such will
be automatically capitalized upon exiting the Field Edit window. Surround any
text you do not want to be capitalized by braces (this is always a good
idea, as Bib\TeX\ also has the capability to automatically capitalize).

While in the Field Edit Window you can also make use of the built in memory
registers. There are 36 memory registers, labeled `A' to `Z' and `0' to '9'.
Each register has a capacity of 255 characters. From the Field Edit Window
you may save text into a register and/or insert text from a register. Saving
text into a register is accomplished by pressing `ALT-S', or clicking on the
`[S]' box on the window frame. The whole text string currently being edited
is saved, unless a selection is in force, in which case only the selected
text is saved. Recalling text is accomplished by pressing `ALT-R' or clicking
on the `[R]' box on the window frame. The recalled text is then inserted at
the current position of the cursor. It is also possible to preload strings
into selected memory registers, using the `\bs registers' environment of the
configuration file (see below).

When exiting the Field Edit Window, the text is checked to see if it is
balanced in terms of braces (`\{' and `\}'). If it is not, a message is
given, and BibDB balances the text as best it can. This balancing is 
often wrong, but it protects the integrity of the rest of the file.

Special consideration must be given to fields which contain Bib\TeX\ macros.
Bib\TeX\ macros are words which expand according to the Bib\TeX\ style file
in use and/or `@STRING' commands in the database file, and consist of single
alphabetic names. A field may also contain a mixture of macro names and
strings (delimited by braces or double quotes), concatenated using the
concatenation character `\#'. BibDB has no way of knowing which words are
macros and which are not, and so the following convention is used: all fields
containing macros {\em must} have `@' as their first character. The `@'
character appears on the screen, and also in the Field Edit Window. When
outputting files, BibDB strips off this character, and writes the contents of
the field with no enclosing braces, so that Bib\TeX\ will be able to
recognize the macro invocations. All other fields (except purely numerical
ones) will be outputted enclosed in braces or double quotes, and so will not
be processed for macro names by Bib\TeX.

For the forgetful, `F1' will bring up a brief help screen.


\subsection{Sort Mode}

BibDB can be told to manually or automatically
support sorted database files. The sort criterion is the following:
\begin{itemize}

\item Sort by pattern matching: if a pattern file is defined, then entries
which conform to this pattern will either precede or follow entries which do
not, depending on the configuration file setting.

\item Sort by key field: If a valid sort key field is defined, then entries
will be sorted using the key by ascending/descending order, depending on the
configuration file setting. Empty key fields are considered as smaller than
any filled key field.

\item Sort by entry name: Entries will be sorted by ascending or descending
entry name order, depending on the configuration file setting.
\end{itemize}
Additionally, one can choose between two collation sequences, ASCII and mixed
case. Using mixed case, ``abc" will come after ``Abc" but before  ``Acd". The
user can define the sort criterion to be any combination of the three, in any
order. Sorting by name will always be defined, however, and put as the last
criterion by default.

BibDB can be put into one of three sort modes: {\tt off}, {\tt on} and {\tt 
auto}. In {\tt off} mode, sorting is performed only when the
``Sorted" option is chosen in the ``Add" or ``Imp." menus. In 
{\tt on} mode, entries will always be placed in their proper place in the file
according to the configuration file defined sort order. BibDB will then
complain and refuse to add, import or edit the file if it finds it is
unsorted. In {\tt auto} mode, BibDB will automatically
determine if the file is sorted or unsorted, and will put itself into
{\tt on} or {\tt off} mode accordingly. As for new files, BibDB will regard
any file with less than 2 entries as sorted in {\tt on} mode,
and unsorted in {\tt off} or {\tt auto} mode.
Note that entry adding and (sometimes) editing will be significantly slower
in sort mode than in unsorted mode.


In addition to reading the various sort options from the configuration file,
BibDB will also read sort information from {\em database} files, if
available. In order to specify the sort options for a file, you should
include a ``\bs sort\{" configuration environment at the beginning of the
file. More precisely, the beginning of the sort environment (the
{\tt \bs sort\{} line) should be in the first five lines of the file. The
format of this sort configuration environment is identical to the format
of the sort environment in the configuration file, except that the
``AddToNewFiles" parameter is ignored. If BibDB finds such an
environment in a file, it will load it and use these parameters instead of
the current ones. Using this feature one can keep different files
sorted in different orders, and also keep some files unsorted, letting BibDB
keep track of the sorting of each file automatically.

BibDB keeps track of two independent sets of sort parameters, the default
mode and the current mode. Both of these modes can be independently edited
using the sort options screen. BibDB will copy the default mode into the
current mode whenever you switch to a database file which does not have a
sort environment. Additionally, if sorting is off in the default mode, it
will stay off until switched back on manually.

BibDB can be told to automatically insert sort environments into new
files whenever it is appropriate. This feature is controlled by the
``AddToNewFiles" sort parameter, which is accessible in the configuration
file and in the sort options screen. If ``AddToNewFiles" is set to ``all",
the current sort mode will be added to all new files, while setting it to
``sorted" will cause the current sort mode to be written to new files only if
sorting is switched on. Finally, the current or default sort parameters can
be written onto the current database file (replacing any existing sort
environment) using the ``Save" command of the sort options screen.


\subsection{Multilingual Support}

The current version of Bib\TeX\ is not built for 8-bit character
processing, even though \TeX\ 3 does support it. This forces users who want
access to the high bit IBM character set to either keep their bibliographies
in 7-bit form, or forgoe compatibility with most implementations of Bib\TeX.

In order to deal with this problem, BibDB provides automatic and user
transparent conversion between 7-bit text and 8-bit text.
Using the configuration file it is possible to tell BibDB to keep the
database file in 7-bit (\TeX) or 8-bit format, and independently to display
and edit the file in BibDB in 7-bit or 8-bit mode. BibDB can also be used to
convert files to and from 8-bit form, thus restoring to the avid 8-bit user
(mostly Germans, I have found!) compatibility with the rest of the world.

When the program is in 8-bit mode, entries read from the file are converted
to 8-bit form before being displayed. In addition, text entered by the user
into entries and patterns is automatically converted. This ensures that you
do not need a special keyboard in order to conveniently use 8-bit mode, as
{\it e.g.} the string ``\bs "u" will be automatically converted to
``\"u". A point to watch though is entering accented ``i" characters --- the
string ``\bs"\bs i~a" will be converted to ``\"\i{a}", but the string
``\bs"\bs ia" will remain unchanged.

When using Bib\TeX\ styles such as {\tt alpha.bst}, Bib\TeX\ 0.99c requires
all \TeX\ form accented characters in fields such as ``author" and ``editor"
to be enclosed in braces, in order for its character counting algorithm to
operate properly. BibDB supports this requirement through designating the 
desired fields as ``authorlike" in the configuration file. Braces will then 
be added or removed as needed during conversion to and from 8-bit mode. Note 
that BibDB will {\em not} add appropriate braces unless a mode conversion is 
performed --- that is up to the user.

\section{The Configuration File}

The configuration file is used in order to configure BibDB to individual
preferences. The basic format of entries in the configuration file is {\bf
\bs$<$environment$>$\{ operands \}}. The backslash must be the first
non--space character in the line. All lines which are not included inside a
recognized environment are ignored. This has the side effect that putting a
`\%', `\$',`!' or similar character in front of an environment line comments
out the whole environment.

\subsection{parameters}

In this environment several parameters of the program are set. The
format is
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\parameters{
  version{<BibDB version number>}
  mouse{[on/off][,hmousecursor <number>-<number>]}
  swap{on/[ems][,xms][,ext][,disk]/off}
  swapdir{<directory1>;<directory2>;...<directoryN>}
  selftest{on/off}
  checkduplicate{on/off}
  alwaysreadfields{on/off}
  stickylist{on/off}
  addmultiple{on/off}
  autocapitalize{on/off}
  tildetospaces{on/off}
  eoldisplay{on/off}
  eolstring{<string>}
  editfields{none/required/optional/required+optional/all}
  overviewfields{field1,field2,field3}
  fielddelimit{braces/quote}
  defaultextention{<file extension>}
  texinputs{<directory1>;<directory2>;....<directoryN>}
  dumpfile{<file name>}
  auxdir{<directory1>;<directory2>;....<directoryN>}
  freediskrequired{<number>[K/M][,[bibsize+]<number>[K/M]][,<number>[K/M]]}
desqview{[nomouse][,noxms][,noems][,noshell][,hmousecursor <number>-<number>]}
  Windows3{[noxms][,noems][,noshell]}
  codepage{<code page name>/<code page number>/autodetect/none}
  accentchars{[prog7bit/prog8bit][,file7bit/file8bit]}
}
\end{verbatim}\end{singlespace}
The order is not important. Lines may be commented out by preceding them
with one of the comment characters `!', `@', `\#', `\$', `\%' or `;'. The
parameters are:

{\parskip=0pt

\paragraph{version:}
Beginning with version 1.3a, this parameter is mandatory. Specify here the
version number for which this configuration file is intended. If the
configuration file version and the internal program version are different,
or if this parameter is missing, BibDB will refuse to run.

\paragraph{mouse:}
Set this to {\tt off} if you want to disable the mouse. Has no effect if
there is no mouse. The default is {\tt on}. The {\tt hmousecursor} option
lets you exchange the block software mouse cursor with a flashing hardware
cursor. The two numbers specify the starting and ending scan lines for the
flashing cursor. Allowed values are 0-7 for color screens and 0-13 for
monochrome.

\paragraph{swap:}
BibDB swaps most of itself out when you shell out to DOS. The {\tt swap}
option controls this swapping. Setting it to {\tt tt \{on\}} enables swapping to
whatever type memory is available. Setting it to {\tt\{ems,xms,ext,disk\}}
enables swapping to whatever type of memory is specified. Finally, setting
this option to {\tt tt \{off\}} disables swapping altogether. The default is
{\tt tt \{on\}}.

\paragraph{swapdir}
The list of directories in which BibDB puts the swapfile when shelling to
DOS, if swapping to disk is indicated. The directories are examined in order
of appearance. If this parameter is missing, the default swap directory
becomes the current directory. The format is similar to that of the DOS PATH
variable, namely directory names, separated by semicolons. The value of an
environment variable may be inserted into the path list by specifying the
variable name, preceded by the `\%' character.

\paragraph{selftest:}
BibDB performs a selftest upon startup, to detect possible tampering. Setting
this parameter to {\em off} disables the selftest. The default is {\tt
\{on\}}. Switch the selftest off if you are sure the program is virus free
and want to save time, or if you compress the program using LZEXE, PKLITE or
an equivalent EXE file compressor.

\paragraph{checkduplicate}
This option controls whether BibDB ensures  that entries inputted through
``Add'' do not have names that are duplicated in the current bibliography
file. Set this to {\tt\{off\}} if you wish to include duplicate names (never
a good idea), or if the time BibDB spends in searching for duplicate names
becomes prohibitive. The default is {\tt\{on\}}. Set it to {\tt\{off\}}
at your own risk!

\paragraph{alwaysreadfields:}
This parameter controls whether BibDB tries to read a whole entry, even when
it only needs the entry name. This option can slow down BibDB considerably,
especially on long files. Set this to {\tt\{on\}} if you are using weird and
unusual bibliography database formats, which BibDB has trouble reading.
The default is {\tt\{off\}}.

\paragraph{stickylist:}
This option determines if, when asking for an entry list ({\it e.g.} in the
``Goto'' menu), the list starts from the beginning of the file ({\tt\{off\}})
or the current entry ({\tt\{on\}}). The default is {\tt\{off\}}.

\paragraph{addmultiple:}
This option determines if, when adding entries using the ``Add'' menu, you
will be asked to add multiple entries sequentially, at the specified
insertion point. Switch this option off if you normally add entries in a non
trivial order in the bibliography file, {\it e.g.} alphabetically or
according to subject. The default is {\tt\{on\}}.

\paragraph{autocapitalize:}
This option determines whether, at startup, automatic capitalization will be
performed on fields which were defined with the ``capitalize'' option. This
can subsequently be switched on and off using the ``options'' menu.

\paragraph{tildetospaces:}
This option controls whether tilde characters will be displayed as themselves
or as spaces. The default is {\tt\{on\}}.

\paragraph{eoldisplay:}
This option switches on and off support for embedded line breaks in Bib\TeX\ 
fields. The default is {\tt\{on\}}.

\paragraph{eolstring:}
This option specifies the string BibDB will recognize as a line break
command. It is convenient (although not mandatory) to precede this string
by a backslash (``\bs''), as it can then be defined as a null operation
in any \TeX\ or \LaTeX\ file which uses this field. The default is
{\tt\{\bs Cr\}}.

\paragraph{editfields:}
Use this option to define the startup default for fields that the user will
be prompted for, when he/she chooses the `Default' option of the Entry Edit
screen. The default is {\tt\{none\}}.

\paragraph{overviewfields}
This parameter determines which fields will be displayed when the ``overview''
option of the ``goto'' menu (inside the main screen) is chosen.
Up to three fields may be specified, and they will be shown in the order
they are written down.

\paragraph{fielddelimit:}
This parameter controls whether the delimiters used around fields in entries
the program writes will be braces or double quotes. Note that this parameter
affects only entries the program is writing to a file. The program can always
read both formats. The default is {\tt\{braces\}}.

\paragraph{defaultextention}
Enter here the default extension you want to be added to any file name, for
which an extension is not explicitly supplied. The default extension if this
parameter is not specified is {\tt\{bib\}}.

\paragraph{texinputs:}
Here one defines the directories in which the bibliography file is searched,
if a pathname is not explicitly given on the command line. The value of an
environment variable may be inserted into the path list by specifying the
variable name, preceded by the `\%' character.

\paragraph{dumpfile:}
The name of the dumpfile, if one is not supplied on the command line.

\paragraph{auxdir:}
The directory in which BibDB will place its auxiliary files used when
updating a bibliography. There must be enough room on the selected drive for
a file of at least the size of the bibliography file (see description of the
`FreeDiskRequired' parameter). The directory list will be searched in the
order specified. BibDB accepts the strings `[xms]' and `[ems]' as signifying
XMS and EMS memory, respectively.
BibDB also recognizes the string ``[bibdir]'' as the path belonging to the
current bibliography file. The value of an environment variable may be
inserted into the path list by specifying the variable name, preceded by the
`\%' character. It is advantageous, in terms of speed, to choose the aux
directory to be either in memory (`[xms]' or `[ems]'), on a RAMDISK, or on
the same drive as the bibliography file -- hence the ``[bibdir]'' option. If
this parameter is an empty string, or none of the directories is valid, you
will not be able to edit the bibliography file. Moreover, BibDB always puts 
at least one of its auxiliary files on a disk (or RAMDISK), so at least one
writable directory must appear in the ``auxdir" parameter

\paragraph{freediskrequired:}
Here one determines the minimum free disk space required for the drive on
which the auxfile will reside. The number given is in bytes, in Kbytes (if
the letter `K' is added) or Mbytes (if the letter `M' is added). The default
is {\tt\{20K\}}. The second parameter specifies the minimum amount of free
space required, above the size of the current bibliography file. The default
is {\tt\{4K\}}. The minimum allowable free space will be the maximum of the
first number and the size of the current bibliography file $+$ the second
number. The third parameter specified the minimum amount of free space
required for the second (list) auxiliary file. This file consists of a list
of the names of entries in the main bibliography file, and is therefore much
smaller than the main file. The default for the third value is the value of
the first parameter.

\paragraph{desqview:}
In this parameter one can specify options that will go into effect only when
BibDB is used under DESQview. The `nomouse', `noxms' and `noems' options are
self-explanatory (`noxms' can be useful in DESQview/X, in cases where
``holes'' appear in XMS memory). The `hmousecursor' option allows you
to replace the default software mouse cursor with a blinking hardware cursor,
which is defined by a staring and ending scan line (0-7 for color screens,
0-13 for monochrome). The hardware cursor has the advantage that, when run
in a small window in DESQview 386, it gives automatic panning of the visible
window over the  logical window. Finally, the `noshell' option disables
shelling to DOS while in DESQview, since opening a new DOS window is more
logical.

\paragraph{Windows3:}
In this parameter one can specify options that will go into effect only when
BibDB is used under Windows 3.x 386 enhanced mode. ``noxms" and ``noems"
disable XMS and EMS usage under Windows 3.x, respectively, while ``noshell"
disables shelling to DOS from BibDB within Windows. Note that XMS and EMS
usage in a Windows 3.x DOS box may sometimes fail, since Windows does not
always return the correct amount of free XMS memory.

\paragraph{codepage:}
Use this parameter to tell BibDB what code page your computer is using.
Currently supported are code pages 437 (United States) and 850 (multilingual).
If you specify {\tt autodetect} BibDB will retrieve the code page from DOS.
The code page is used in the 8-bit characters support, and in several other
minor places for cleaner displays. You might set the codepage parameter to a
setting other than your current code page if you are converting a file to
or from 8-bit format which does not fit your code page. Setting
{\tt codepage\{none\}} will disable automatic 8-bit support.

\paragraph{accentchars:}
Use this parameter to control automatic 8-bit support. It is possible to
independently force 8-bit or 7-bit form on the display and the file,
respectively. If a parameter is not specified for the program (display) or
the file, that medium is left alone.

}

%\newpage
\subsection{sort}

In this environment the sort mode and order the program are set. The
format is
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\sort{
  mode{off/on/auto}
  collation{ASCII/mixed}
  sorttypeorder{[pattern/key/name][,pattern/key/name][,pattern/key/name]}
  nameorder{ascending/descending}
  keyfield{<field name>}
  keyorder{ascending/descending}
  patternfile{<pattern file name>}
  patternorder{first/last}
  addtonewfiles{sorted/all/none}
}
\end{verbatim}\end{singlespace}

{\parskip=0pt

\paragraph{mode:}
This parameter specifies the default sortmode of BibDB(see sort mode section).
Default is {\tt\{mixed,off\}}, {\it i.e.\/} no automatic sorting. This mode
is faster than the others when editing, adding or importing entries.

\paragraph{collation:}
This parameter controls the
collation sequence. Currently supported are ASCII and mixed case orders (in
mixed case, ``abc" will come after ``Abc" but before ``Acd"). Default is
{\tt mixed}.

\paragraph{sorttypeorder:} determines the order by which sorting is 
performed. Any sort type (by name, by key and by pattern) which is not
mentioned is not used, except that {\tt name} is always appended to the
list if missing. Default is {\tt \{name\}}. Note that it makes little sense
to put {\tt name} anywhere but at the end --- since the names are (usually)
distinct, the rest of the sequence will effectively be ignored.

\paragraph{nameorder:} controls whether entry name sort will be by ascending 
or descending order. Default is ascending order.

\paragraph{keyfield:} determines the entry field which will be used as a sort 
key. Default is none.

\paragraph{keyorder:} determines whether the sort by key  will be by
ascending or descending order. Default is ascending order.

\paragraph{patternfile:} determines the file name where the desired sorting
pattern is stored. Default is no pattern.

\paragraph{patternorder:} determines whether entries which conform to the
pattern in the pattern file will precede or follow entries which do not
conform to the pattern. {\tt ascending} and {\tt descending} may also be used.
Default is {\tt first} (precede).

\paragraph{addtonewfiles:} determines whether a sort environment will be
written to new database files.

}
Exactly the same format as detailed above can be used inside the individual
bibliography files.

\subsection{colors}

This (optional) section defines the colors BibDB uses, when a color screen is
used. The format in this environment is
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\colors{
  main{<Color>}
  topmenu{<Normal>,<Highlight>,<Bright>}
  menu{<Normal>,<Highlight>,<Bright>}
  message{<Normal>,<Highlight>}
  error{<Normal>,<Highlight>}
  entry{<Normal>,<Highlight>,<EditBorder>}
  edit{<Normal>,<Highlight>,<Mark>}
  list{<Normal>,<Highlight>,<Bright>}
  dialog{<Normal>,<Cursor>,<Highlight>}
  pattern{<Normal>,<Highlight>,<Window>}
  monochrome
  color
}
\end{verbatim}\end{singlespace}

\noindent Each one of the items in {\tt < >}
consists of a pair of colors: a foreground color and a background color.
Each color may be specified either by its number or by its name. The
characters `{\tt <}', `{\tt >}', `{\tt (}', {\tt )}, spaces and the word
`{\tt on}' may be used as spacers, to enhance the readability of the file.
The available colors are given in Table~\ref{ColorTable}.
\begin{table}[ht]
\begin{center}
\begin{tabular}{|ll|ll|ll|ll|}
\hline
0 -- & Black & 4 -- & Red & 8 -- & DarkGray & 12 -- & LightRed \\
1 -- & Blue  & 5 -- & Magenta & 9 -- & LightBlue & 13 -- & LightMagenta \\
2 -- & Green & 6 -- & Brown & 10 -- & LightGreen & 14 -- & Yellow \\
3 -- & Cyan  & 7 -- & LightGray & 11 -- & LightCyan & 15 -- & White \\
\hline
\end{tabular}
\end{center}

\caption{The list of permissible colors}
\label{ColorTable}
\end{table}
Only colors 0 through 7 may be used as background colors.
Use the program ``COLORS.EXE'' to see a list of available combinations.

The meaning of the various fields are as follows:
\begin{description}
\item[\bf main:\hfill] The main screen, on which the entries are displayed.
\item[\bf topmenu:\hfill] The menus on the first line of the screen.
\item[\bf menu:\hfill] The various popup menus, and the ``fields'' menu in the
    ``pattern'' screen.
\item[\bf message:\hfill] The various informative messages.
\item[\bf error:\hfill] The error messages.
\item[\bf entry:\hfill] The displayed entry, as seen in the main and
    ``Entry Edit'' screens, as well as the color of the border marking the
    ``Entry Edit'' screen.
\item[\bf list:\hfill] The list of entries, list of entry types, list of
    entry fields and list of memory registers.
\item[\bf dialog:\hfill] The various dialog (user input) boxes. The
    ``cursor'' item refers to the cursor of the ``Files'' and ``Options''
    menus.
\item[\bf pattern:\hfill] The ``Pattern'' screen. The ``Window'' color is the
    color of the window where the pattern is displayed.
\end{description}

The program will revert to monochrome in the following circumstances: If
BibDB detects a monochrome monitor, if the word ``monochrome'' appears in the
``colors'' section, or if the option ``/mono'' appears in the command line.
It will go to `color' mode if a color screen is detected, the word ``color''
appears in the ``colors'' section, or the option ``/color'' appears in the
command line. In any case, a flag given on the command line supersedes the
one given in the configuration file. In color mode, the program will use
either the colors defined in the ``colors'' environment, or the default
colors defined internally if the ``colors'' environment is missing.

\subsection{fields}

This environment defines the fields that BibDB will recognize and use,
together with several of their properties. Note that, in contrast to
Ver.~1.0a, all fields MUST be defined here -- there are NO predefined
defaults. A total of 36 fields may be defined (vanilla Bib\TeX\ uses 27
fields). One new field name per line may be specified. The format is:

{\samepage
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\fields{
first field[{capitalize,numeric,authorlike}]
second field[{capitalize,numeric,authorlike}]
.
.
last field[{capitalize,numeric,authorlike}]
}
\end{verbatim}\end{singlespace}  }

The meaning of the qualifiers are:
\begin{itemize}
\item Capitalize. Any fields followed by the string {\tt \{capitalize\}} will
  be automatically capitalized after any editing, if the ``autocapitalize''
  flag is turned on.
\item Numeric. Any fields followed by the string {\tt \{numeric\}} will be
  recognized as numeric by the pattern matching algorithm. This will enable
  specifying a range in the search pattern. The fields ``year'' and
  ``number'' are designated numeric by the supplied configuration file.
\item Authorlike. For fields with this designator, BibDB adds and removes
  braces around accented characters when converting between 7-bit and 8-bit
  modes. This is done so that the character counting algorithm of Bib\TeX\
  will be able to work properly in ``alpha"-like bibliography styles. The
  fields ``author" and ``editor" are designated authorlike in the supplied
  configuration file.
\end{itemize}

\subsection{entrytypes}

This environment serves a dual purpose. You define here entry types which
will be recognized by BibDB. Note that all entry types {\em must} be defined
-- there are NO defaults (the supplied configuration file defines all
standard Bib\TeX\ types). Also, this environment must appear {\em after} the
``\bs fields'' environment. In this environment one can optionally define
which fields are required or optional for each entry type. This information
is used in the Entry Edit screen, when you choose the ``Required'' option. A
total of 36 entry types may be defined (vanilla Bib\TeX\ uses 14 types). The
format is the following:
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\entrytypes{
first type{list of required fields}
second type{list of required fields}
.
.
last type{list of required fields}
}
\end{verbatim}\end{singlespace}

The list of required fields may be empty, in which case the braces should be
omitted. This list is composed of a series of field names, separated by
commas or spaces. The order is unimportant. Use angle brackets to specify
that certain fields are Optional. Thus:
\begin{verbatim}
misc{author, title, <year>, note, <keywords, abstract>}
\end{verbatim}
means that, for the entry type `misc', the `author', `title' and `note'
fields are Required, and the `year', `keywords' and `abstract' fields are
Optional. The rest are automatically classified as Ignored. This
classification can be viewed in the `Fields' menu of the Entry Edit screen.


\subsection{dumpformats and patternformats}

In these environments one defines which options will appear in the ``Dump
format'' menu of the main screen, and the ``Choose field'' of the ``Pattern''
screen, respectively. They must appear AFTER the ``\bs fields'' environment.
The format is:
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\dumpformats or \patternformats{
<field1+field2+...+fieldN>,"<menu string>",<hotkey>
<field1+field2+...+fieldN>,"<menu string>",<hotkey>
.
.
}
\end{verbatim}\end{singlespace}
Each line defines one menu entry. The first part defines the fields
associated with that choice, the second part defines the string that will
appear in the menu, and the last part is the character which chooses that
menu entry. The character must appear somewhere within the menu string, and
it is up to the user to verify that the choice is unique. Up to 11 menu
entries may be defined, and these will join 4 predefined menu entries. Note
that, in the ``Choose field'' menu, the name of the entry may be entered as
``entry\underscore name'', although it is not a true field.

%\newpage
\subsection{registers}

Use this environment to load strings into the memory registers at startup.
The format is
\vspace*{-1cm}\begin{singlespace}\begin{verbatim}
\registers{
<1st register name> = {<string>}
<2nd register name> = {<string>}
.
.
<last register name> = {<string>}
}
\end{verbatim}\end{singlespace}

The permissible register names are `0' through `9' and `A' through `Z'. All
strings {\em must} be balanced in terms of braces, and not longer than 255
characters. The `=' is optional. The register strings may lie on several
lines.

\subsection{The showformat Environment}

In addition to the environments defined above, some of which are
optional, there is an additional BibDB entry, which is mandatory. This is
the ``showformat'' environment, which tells BibDB how to display each
Bib\TeX\ entry on the screen. This is in fact a program in a sort of
degenerate stack--oriented ``language''. For each entry, BibDB goes through
the whole of the showformat environment, from beginning to end. The rules
are as follows:
\begin{enumerate}

\item Any character which does not have a special meaning is written
to the screen. This includes end-of-line. An exception is that leading spaces
in a line are ignored, so you can indent the code for readability. If you do
want to insert spaces at the beginning of a line in the configuration file,
surround them with curly braces.

\item Curly braces, which do not belong to a command, are not printed out.
They do, however, have to balance. The only use I can think of for these
braces is, as mentioned above, to insert spaces at the beginning of a line.

\item ``\bs cr\{number\}'' is interpreted as $<$number$>$ CRs.
``\bs cr\{\}'' is interpreted as one CR. ``\bs cr\{0\}'' will write out a CR
only if the current point is not at the beginning of a line, and so is useful
for ensuring that the next string written down will start at the beginning of
the next line.

\item ``\bs bf\{...\}'' writes out whatever is inside the braces in boldface.

\item ``\bs color\{<foreground color>,<background color>\}\{...\}'' writes
out the content of the second pair of braces colored according to the
specified foreground and background colors. The colors are each specified
as a number between 0 and 15.

\item ``$<$fieldname$>$'' is replaced by the content of the field
`fieldname', if any.

\item ``$<<$fieldname$>>$'' is replaced by ``\bs bf\{Fieldname:\}
$<$fieldname$>$''.

\item ``\bs if\{$<$logical expression$>$\}\{.....\}\bs elseif\{$<$logical
expression$>$\}\{.....\}.....\bs else\{....\}''
is replaced by the value in braces which corresponds to the logical condition
which is fulfilled. The format of logical expressions, in this context, is
the following: the expressions are a sequence of field names or entry types,
and the logical operators \inv\ (NOT), * (AND) and + (OR). Each field name is
replaced by true if the current entry contains such a field, and by false
otherwise. Each entry type is also replaced by true or false, if it does or
does not conform to the type of the current entry. The result is then pushed
into the stack. The logical operators operate on this stack, in the same way
as a search pattern is evaluated (RPN). For example:
\begin{verbatim}
\if{article,book,+,title,^,*}{<author>\cr{0}}
\end{verbatim}
will write out the name of the author(s) and a CR if the entry type is
`article' {\em or} `book', {\em and} the entry does {\em not} contain a
title. In the case that you have defined an entry type and a field
with identical names, prefixing the string with {\tt t`} or {\tt f`} will
unambiguously designate it as the name of an entry type or a field,
respectively.

\item The semicolon character (;) is used as a comment character: the rest
of the line (including the end-of-line) following a semicolon is ignored.

\item Special characters (\bs,\{,\},$<$,$>$,;) will be printed to the
screen if preceded by a backslash (\bs).
\end{enumerate}

I am not sure if everything is clear here, but look at the sample
configuration file supplied with the program, and try to understand from
that. The file is more or less built to the specifications of standard
Bib\TeX. Feel free to experiment, and see how everything works.

%\newpage
\section{Additional Comments}

There are a number of important points, which do not fit anywhere else,
so here they are.
\begin{itemize}

\item When BibDB is invoked, it first looks for the configuration file. The
default name for this file is `$\langle$program name$\rangle$.CFG' (usually
`BibDB.CFG'), but a different file name may be specified in the command line.
The configuration file is searched for first in the current directory, then
in the directory where BibDB resides, and finally along the DOS PATH. If the
configuration file is not found, the program halts.

\item When writing fields which contain a mixture of strings and macros, the
first character {\em must} be `@', otherwise BibDB will enclose the text in
braces. You should take care when writing such fields: BibDB will detect
unbalanced braces and quotes, but will not check the syntax otherwise.

\item If you insert line breaks into
fields which you also intend to use in actual bibliography fields ({\em e.g.}
``title"), you should also declare the line break control as a null operation
in your \TeX\ file. Thus, using the default line break control, you should
insert the line {\tt \bs def\bs Cr\#1\{\}}
into the preamble of your \TeX\ or \LaTeX\ document. Note that, if you choose 
to change the line break control to {\tt \bs cr}, you should remember that
this control is already in use in \TeX.

\item If BibDB encounters a field which was previously undeclared
(in the configuration file), it automatically adds it to the list of
permissible fields, and marks it as ``ignored'' by all entry types. However,
care must be taken to ensure that the total number of declared and implicit
fields not exceed 36. Generally, it is preferable to predefine all fields in
the configuration file.

\item BibDB will work only on {\em legitimate} Bib\TeX\ bibliography files,
that is on files on which Bib\TeX\ reports no errors. If your file contains
Bib\TeX\ errors, especially unbalanced braces, the results are unpredictable.

\item If the program does not work, look in the configuration file to see if
the parameters conform to your computer. You might need to switch on the
``alwaysreadfields'' parameter if the format of your database files is
unusual. In particular, you might need to switch it on if you do not start
entries on new lines. It is still possible, however, that there exist
legitimate (if weird) Bib\TeX\ formats that BibDB will not be able to read.

\item BibDB preserves any text that precedes the first entry, such as
comments and `@STRING' commands, and also copies it faithfully during the
`Dump all' and `Order file' operations (in Bib\TeX\ mode only). Any text
that appears in the middle of a file is usually ignored, and `Dump'
operations do not copy such text. In general, it is wise to put any comments,
`@STRING' commands, etc., at the beginning of a bibliography file.

\item BibDB works directly on the bibliography file, which is an ASCII file
with no indexing data. Consequently, the program may slow down when working
with very large bibliographies. Try to keep the individual bibliography
files reasonably small. Also, if possible use a disk cache.

\item You may rename BibDB.EXE to another name. The renamed program will
then by default look for a configuration file whose name is the same as the
program name. Thus, if you rename the program to BIBLIO.EXE, the
configuration file should be called BIBLIO.CFG. Alternatively, you could use
the `/c' command line parameter to explicitly specify a configuration file.

\item BibDB works fine when compressed using LZEXE, PKLITE, DIET, or similar
EXE file compressors. However, the selftest will fail if the program is
compressed. So, first make sure the program is not virus infected, and then
switch off the selftest by writing ``\bs selftest\{off\}'' in the
configuration file.

\item Before an actual change occurs to the bibliography file (as a
consequence of saving the current sort parameters, or performing an
Add, Edit, Import, Paste, Replace or Cut), the original file
is backed up, and given the extension .BAK.

\item BibDB is DESQview--aware. This means that: (a) BibDB will not
needlessly occupy the CPU while waiting for input (true under WINDOWS 3.x as
well), and (b) BibDB will write to the DESQview video buffer instead of
to the video memory. Thus, the "Writes directly to screen" and the
"Virtualize screen" parameters may be switched off in the DESQview DVP file.
However, under DESQview 386, the mouse driver may not operate satisfactorily
in this mode. Thus, you should either switch the mouse off (specify `nomouse'
in the `desqview' configuration file parameter), or use screen
virtualization anyway if you plan to run BibDB in a small window. You
can also specify in the configuration file that, under DESQview, the default
software mouse cursor be replaced by a hardware cursor. The hardware cursor
is a blinking rectangle, and so can be annoying, but it enables automatic
panning of the visible window over the logical screen, and is quite useful.

Under DESQview/X, BibDB does not display a mouse cursor at all, but uses the
global cursor, and so you can leave virtualization off. However, it has been
reported that BibDB has difficulty using XMS under DESQview/X, since
DESQview/X has a tendency to create ``holes'' in contiguous XMS memory. If
this is the case on your system, you should specify `noxms' in the `desqview'
configuration file parameter in order to avoid its use. EMS memory, however,
does work under DESQview/X.

\item Limitations: Up to 8 bibliography files may be specified on the command
line. The line length in the bibliography file can't exceed 255 characters.
If it does, use AWK, PERL or your favorite editor to fix it. The maximum
length of any field entry is 3040 characters, but a maximum of two field
entries in any one entry may be longer than 255 characters. If an entry
contains more than two big fields, an error message is issued, and the field
is truncated. The maximum length of the entry names is 50 characters. The
maximum number of fields and of entry types that the program accepts is 36.
The maximum number of user defined menu items in the ``Choose field'' and
``Dump format'' menus is 11. Also, patterns are limited to a maximum of 25
parts, and problems may occur if pattern entries are longer than 128
characters (especially when searching in long entry fields), although the
formal limit is 255 characters. There is also a limit of 100 on the amount of
nesting in ShowFormat definitions. Lines in the configuration file may not be
longer than 255 characters, and fully expanded path lists may not be longer
than 255 characters. The database may contain up to 65535 entries, although
long files will slow down the program. Finally, the ShowFormat part of the
configuration file may not be more than 16K bytes long.
\end{itemize}


\section{It Doesn't Work!}

When BibDB does not work as expected, it can be for one of four reasons:
\begin{enumerate}
\item An error in the configuration file;
\item An incompatibility problem with the PC setup;
\item A corrupted EXE file;
\item A bug in BibDB.
\end{enumerate}
Try first to determine which one of these possibilities (or combination of
possibilities) is responsible for your problem. Use the usual procedure of
removing all TSRs and superfluous drivers from your system, and then adding
them incrementally to see which one causes problems. If you are using a non
Microsoft or IBM DOS ({\it e.g.} DrDOS), try to boot from a normal DOS
diskette and see if the problem persists.

In developing BibDB, I tried to make the use as easy and automated as
possible, especially when dealing with files --- bibliography, dump,
configuration and auxiliary files. Unfortunately, this has had the effect of
introducing new opportunities for incompatibilities and other problems. Most
of the problems you might encounter will have to do with the way BibDB
searches for and treats files, and the most vulnerable place is the treatment
of auxiliary files. I will therefore elaborate on the way BibDB treats them.

Auxiliary files are used by BibDB whenever a change is to be made to the
bibliography file. BibDB uses up to four auxiliary files at the same time.
During normal operation of BibDB, these files are placed in a directory
which is specified by the `auxdir' configuration file parameter, or the `/a'
command line parameter, if specified. Their names are generated by the DOS
``\$5A'' function, which ensures that they are unique --- the auxiliary files
can't overwrite existing files, including auxiliary files of BibDB running on
a different task. The auxiliary directory is chosen from the list provided by
`auxdir' using the following criteria: the directory (this includes a memory
type specification) must exist, must be writable, and must have at least the
maximum of the first `FreeDiskRequired' number, and the size of the current
bibliography file $+$ the second `FreeDiskRequired' number free bytes of disk
space (the size requirements for the second file are slightly different ---
the minimum free space is the value of the third `FreeDiskRequired'
parameter). The first directory from the directory list that meets these
criteria is chosen as the auxiliary file location. If no directory meets
these criteria for the main auxiliary file, file editing is switched off,
while if no directory meets them for the second auxiliary file, checking for
duplicate names is switched off. The `auxdir' parameter is scanned at
startup, whenever the bibliography file is changed (if `auxdir' includes the
`[bibdir]' string), whenever the `auxdir' parameter is changed, and whenever
there is not enough disk space in the selected auxiliary directory. All
auxiliary files are deleted upon normal termination of BibDB. All but one of
the auxilliary ``files" may in fact reside in XMS or EMS memory, rather than
on a disk.

On some systems which are not perfectly IBM PC compatible, it may happen that
some of the procedures outlined above may fail. It is possible to ask BibDB
to display the names of the auxiliary files it generates, by specifying
`/debug' on the command line. If the resulting directory is not to your
liking, changing the `auxdir' parameter might solve your problem. You might
try to leave out the `[bibdir]' option, and specify just a single directory,
which you know to exist.

BibDB has been reported to be incompatible with the DOS JOIN command,
whenever the bibliography file is situated on a JOINed disk. In this respect,
I would just note that BibDB is far from being the only program to suffer
under JOIN (the full list includes, among others, the DOS commands BACKUP,
RESTORE, DISKCOPY and DISKCOMP, amd Microsoft have in fact left out JOIN from
MSDOS 6.2). In general, it is bad PC practice to use
JOIN --- it is better to format your disk to have large partitions. Some reports
have also indicated some compatibility problems with DrDOS 6.0 (although it
worked fine for me), which are however solvable by playing around with the
`auxdir' parameter.

The EMS usage of BibDB for the auxiliary files has been reported to be
incompatible with several memory managers, including QEMM and OS/2 2.0 .
For this reason, I have omitted it from the default configuration file. If
you wish, you may turn it on {\em carefully}, and see what happens. XMS
usage is fine, though, and should be enough for most people.

You may come across the error message that BibDB can't find a command line
interpreter, and that consequently shelling to DOS is disabled. BibDB looks
for the command line interpreter by reading the value of the COMSPEC
environment variable. If COMSPEC is not set, BibDB looks for the files
`4DOS.COM' and `COMMAND.COM' in the directories `C:\bs 4DOS', `C:\bs DRDOS',
`C:\bs DOS' and `C:\bs', in that order. Make sure that your command line
interpreter is present in one of these locations, or point to it using
`COMSPEC'.

It may happen that the EXE file you are running is corrupted. You can easily
check this by switching on the selftest in the configuration file (this is in
general a good thing to do the first time you run BibDB). If the file is
indeed corrupted, the only thing to do is to get a new copy.

If the above procedures do not help, you may have come across a bug in BibDB
(this is not unheard of). If you conclude that your problems stem from a bug
in BibDB, please let me know. Let me know also if you come across an
incompatibility. Try to specify in your message all relevant information,
including your `autoexec.bat' and `config.sys' files, configuration file, DOS
version, CPU, which disks you are working on, a sample of your bibliography
file, special modes and TSRs, the result of the DOS ``mem" command,
and whatever else you think is relevant. I must
be able to reconstruct the problem here, or I will not be able to correct it.
Be prepared for the possibility that I will use you as a beta tester for that
problem. Also note that if your problem is hardware related ({\it e.g.}
special cards or adapters), I may be unable to deal with it. The
same may also be true for the more unusual PC configurations. Please remember
that I am a single individual working on my own time, and not a commercial
company --- I will do my best (time permitting), but I promise nothing.

\newpage
\section{Disclaimer}

As you can imagine, this program is not guaranteed to do anything whatsoever,
nor is it guaranteed not to damage your files, scratch your hard disk or blow
up your computer. You use this program completely at your own risk. I think
these are reasonable terms, since you are not paying anything for it. This
version may well contain hidden ``features'' you did not think about, and so
be careful --- back up essential files (and possibly lock away your
wife/husband and children). Also, {\em please} check the program with its
built in selftest and with a virus scanner the first time you run it,
especially if you got it from an unsafe source!

For those hardy types which want to tell me how wonderful the program is and
what lovely exciting unexpected things it does to their data, I can be
reached via e-mail at

\noindent phed@siva.bristol.ac.uk

\noindent and by mail at the following address:

\noindent
Eyal Doron, H.H. Wills Physics Laboratory, University of Bristol, Tyndall
Avenue, Bristol BS8 1TL, U.K.

\bigskip
\hspace*{2in}Good Luck!

\bigskip\bigskip

\centerline{\bf Acknowledgments}

\medskip
\noindent The following public domain packages were used in the production of
BibDB: the SPAWNO routines by Ralf Brown, Timo Salmi's TSERR and TSUNTI
units, Jack Ridgway's MULAWARE unit, Duncan Murdoch's impressive STREAMS
unit, and my own FMANAGE unit.

%==========================================================%
% Uncomment the following lines if you wish to include the %
% configuration file into the manual.                      %
%==========================================================%
%\newpage
%\appendix
%\section{Sample Configuration File}

%\hfuzz=4pt
%\begin{singlespace}
%\verbatimfile{bibdb.cfg}
%\end{singlespace}

\end{document}
